SQL Kısıtlamaları (Constraints) Kullanımı ve Yönetimi
Meta Açıklaması:
SQL kısıtlamaları (constraints) ile veri bütünlüğü sağlayın.
UNIQUE, CHECK ve PRIMARY KEY gibi kısıtlamaları tablo oluşturma ve ALTER TABLE üzerinden yönetin.
🎯 Bu Rehberde Ne Öğreneceksiniz?
Bu kılavuz, SQL kısıtlamalarını kullanarak veritabanı tablolarına veri doğruluğu kuralları koymayı öğretir.
Aşağıdaki adımları uygulayarak veri bütünlüğünü güçlendireceksiniz:
- Tablo oluştururken sütun ve tablo seviyesinde kısıtlama tanımlama
- UNIQUE ve CHECK kullanımı
- Kısıtlamalara özel isim verme (CONSTRAINT)
- ALTER TABLE ile kısıtlama ekleme ve silme
- SHOW CREATE TABLE ile mevcut kısıtlamaları görüntüleme
🧠 Teknik Özet
Amaç: Veri bütünlüğünü koruyarak yanlış, eksik veya tekrar eden verilerin eklenmesini engellemek.
Kapsam:
- Sütun seviyesinde (column-level) ve tablo seviyesinde (table-level) constraint tanımlama
- UNIQUE, CHECK ve PRIMARY KEY türleriyle pratik örnekler
- ALTER TABLE ile mevcut tablolara constraint ekleme veya silme
⚙️ 1. Ortamı Hazırlama
MySQL’e bağlanın:
ssh [email protected]
mysql -u admin -p
Yeni bir veritabanı oluşturun:
CREATE DATABASE constraintsDB;
USE constraintsDB;
💬 constraintsDB isimli veritabanı oluşturulur ve aktif hale getirilir.
🧩 2. Kısıtlamalarla Tablo Oluşturma
Sütun Seviyesinde Kısıtlama (Column-Level)
Bir kısıtlamayı sütun tanımının hemen ardından ekleyebilirsiniz.
CREATE TABLE calisanBilgileri (
calisanID INT UNIQUE,
adSoyad VARCHAR(30),
telefon INT
);
💬 calisanID sütununa UNIQUE kısıtlaması uygulanır. Aynı ID’ye sahip iki kayıt eklenemez.
Tablo Seviyesinde Kısıtlama (Table-Level)
Tablo seviyesindeki kısıtlamalar birden fazla sütunu kapsayabilir.
CREATE TABLE yarisciBilgileri (
yarisciID INT,
siralama INT,
yarisciAd VARCHAR(30),
CHECK (siralama >= 1)
);
💬 siralama değerinin her zaman 1 veya daha büyük olması sağlanır. Bu, tablo genelinde uygulanan bir CHECK kısıtlamasıdır.
🏷️ 3. Kısıtlamalara Özel İsim Verme
Kısıtlamalara anlamlı bir isim vermek, yönetimi kolaylaştırır.
CREATE TABLE yeniYarisciBilgileri (
yarisciID INT,
siralama INT,
yarisciAd VARCHAR(30),
CONSTRAINT pozitifSiralama CHECK (siralama >= 1)
);
💬 pozitifSiralama adlı constraint, siralama değerinin negatif olmasını engeller.
🔎 Eğer constraint ismini unuttuysanız:
SHOW CREATE TABLE yeniYarisciBilgileri;
💬 Bu komut, tablonun oluşturulma yapısını ve constraint isimlerini gösterir.
🔧 4. Mevcut Kısıtlamaları Yönetme
Yeni Constraint Ekleme
ALTER TABLE calisanBilgileri ADD UNIQUE (adSoyad);
💬 adSoyad sütununa UNIQUE kısıtlaması eklenir.
Kısıtlamaya özel isim de verebilirsiniz:
ALTER TABLE yarisciBilgileri
ADD CONSTRAINT essizID UNIQUE (yarisciID);
💬 essizID adlı UNIQUE kısıtlaması eklenir. ⚠️ Eğer tabloda tekrar eden kayıtlar varsa işlem başarısız olur.
Constraint Silme
ALTER TABLE yarisciBilgileri DROP CONSTRAINT essizID;
💬 essizID adlı constraint kaldırılır.
❓ Sıkça Sorulan Sorular (SSS)
- PRIMARY KEY bir constraint midir?
Evet. PRIMARY KEY, UNIQUE ve NOT NULL kısıtlamalarının birleşimidir. Her tabloda yalnızca bir tane olabilir.
- Kısıtlamalar performansı yavaşlatır mı?
Evet, veri ekleme sırasında doğrulama yapıldığı için hafif bir gecikme olabilir. Ancak bu, veri bütünlüğü açısından oldukça faydalıdır.
- Sütun ve tablo kısıtlamaları arasındaki fark nedir?
Sütun kısıtlaması sadece o sütunu etkiler. Tablo kısıtlaması birden fazla sütunu referans alabilir.
- Kısıtlamalar sadece yeni kayıtları mı kontrol eder?
Hayır. UPDATE işlemleri de kısıtlamalarla doğrulanır. Kuralı ihlal eden güncellemeler reddedilir.
- CHECK ve ENUM farkı nedir?
CHECK, koşullu ifadeleri değerlendirir (örnek: yas > 18). ENUM ise sadece belirli sabit değerleri kabul eder örnek:
cinsiyet ENUM('E', 'K').
☁️ Sonuç ve Öneri
SQL kısıtlamaları (constraints), veritabanı bütünlüğünün temelini oluşturur. Bu rehberde UNIQUE, CHECK ve PRIMARY KEY gibi kısıtlamaları nasıl tanımlayacağınızı, isimlendireceğinizi ve yöneteceğinizi öğrendiniz.
💡 Kısıtlamaları Rabisu Bulut platformundaki yönetilen MySQL hizmetinizde test ederek, uygulamalarınızın veri güvenliğini garanti altına alabilirsiniz.